//=========对[filedata.c]进行测试======
//=========对[function.c]进行测试======
//=========对[screen.c]进行测试======

//[问题一]:重复对结构体进行定义,使其无效
//[解决办法]:在声明文件里把结构体定义在最上面,或者include 少量头文件
/*
In file included from function.h:11:0,
                 from filedata.c:8:
filedata.h:14:18: 错误： 未知的类型名‘pLink’
filedata.h:18:19: 错误： 未知的类型名‘pLink’
In file included from function.h:11:0,
				 from test3.c:9:
filedata.h:14:18: 错误： 未知的类型名‘pLink’
filedata.h:18:19: 错误： 未知的类型名‘pLink’
test3.c: 在函数‘main’中:
test3.c:20:2: 警告： 隐式声明函数‘Read_Data_P’ [-Wimplicit-function-declaration]
test3.c:33:2: 警告： 隐式声明函数‘Write_Data_P’ [-Wimplicit-function-declaration]
*/
/*[问题二]:结构体内存过度(存入的量大于申请的量) [未解决]
[解决办法]:数据赋值时[未作类型转化],造成内存过度 ------>无效
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x085b2330 ***
*** glibc detected *** ./a.out: malloc(): memory corruption: 0x085b2340 ***
*/

/*[问题三]:输入的字母,但要求输入的格式为数字,结果无效[未解决]

*/

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <unistd.h>

#include "tlinklist.h"
#include "slinklist.h"
#include "function.h"
#include "filedata.h"
#include "screen.h"

int main()
{
	//创建相关链表
	pLink PL = (pLink)malloc(sizeof(pLink));
	tLink TL = Create_tLink();
	sLink SL = Create_sLink();

	//数据加载
	Read_Data_P(PL);
	Read_Data_T(TL);
	Read_Data_S(SL);

	//链表数据
	//Travel_tLink(TL);
	//Travel_sLink(SL);
	//sleep(3);

	//登录界面
	//char flag = -1;
	//flag = Login_Screen();
	//printf("%hhd\n",flag);

	//密码检验
	//Check_Password("5501790");

	//开发人员:修改校长密码[系统初始化最后测试]
	//Check_Password_D();
	//printf("%s\n",PL->password);
	//Modify_Password_P(PL);
	//printf("%s\n",PL->password);
	Init_System(PL,TL,SL);
	if(TL->head == NULL) printf("TL->head\n");
	if(TL->tail == NULL) printf("TL->tail\n");
	if(SL->head == NULL) printf("SL->head\n");
	if(SL->tail == NULL) printf("SL->tail\n");
	//登录界面
	//printf("\n%hhd\n",Developer_Screen());

	//校长
	//Check_Password_P(PL);
	//Simple_Input_TD(TL);
	//Check_Modify_TD(TL,15040302);
	//Check_Quit_TD(TL);
	//Reset_Password_P(PL);
	//登录界面
	//printf("\n%hhd\n",Principal_Screen(PL));

	//老师
	//Check_Password_T(TL);
	//Batch_Input_SD(SL);
	//Batch_Input_SS(SL);
	//Check_Modify_SD(SL,15015228);
	//Check_Quit_SD(SL);
	//Check_SSC(SL);
	//Reset_Password_T(TL,15040302);
	//登录界面
	//printf("\n%hhd\n",Teacher_Screen(TL));
	//printf("\n%d\n",Get_ID());

	//学生
	//Check_Password_S(SL);
	//Check_Score_SP(SL,15015228);
	//Reset_Password_S(SL,15015228);
	//登录界面
	//printf("\n%hhd\n",Student_Screen(SL));
	//排序
	//Travel_sLink(SL);
	//Sort_sLink(SL,SL->head,SL->tail,1);
	//Travel_sLink(SL);
	//Score_sLink(SL,15015228,89,99,99); //插入操作有效
	//Sort_sLink(SL,SL->head,SL->tail,1);//此排序对于对插入式排序---->无效
	//Travel_sLink(SL);

	//保存数据
	//Write_Data_P(PL);
	//Write_Data_T(TL);
	//Write_Data_S(SL);
}
